[英]Spreadsheet function does not run when button clicked
我之前提出了一個由兩部分組成的問題 ,只有一部分被回答然后關閉,而另一部分則沒有得到答復。 我重新問那個部分。
我負責為我的團隊創建一個“自動”項目跟蹤表。 在某人按下按鈕的意義上是自動的,它記錄日期/時間戳,並且他們在所述項目上花費的時間是自動計算的。
但是,當我將腳本連接到Google繪圖作為按鈕時,它沒有做任何事情,我無法弄清楚原因。
這是我的電子表格的樣子,其中一個按鈕(繪圖)配置為在單擊時運行timeStamp()
函數:
您還可以在此處獲取電子表格的副本。
我到目前為止的代碼:
function timeStamp() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var timezone = ss.getSpreadsheetTimeZone;
var timeFormat = "hh:mm a";
var lastCol = sheet.getLastColumn();
var lastRow = sheet.getLastRow();
var lastCell = sheet.getRange(lastRow, lastCol);
var timeStampCell = sheet.getRange(lastRow, lastCol + 1);
if(timeStampCell === " ") {
var date = Utilities.formatDate(new Date(), timezone, timeFormat);
timeStampCell.setValue(date);
};
}
var timeStampCell = sheet.getRange(lastRow, lastCol + 1);
...將timeStampCell
設置為Range對象。
if(timeStampCell === " ") {
...將Range對象與包含單個空格字符的String進行比較。 比較總是false
,因為類型不同。 如果使用==
與允許的類型強制進行比較,它仍然會評估為false
因為操作數只是不同。
您可能想要單元格的內容,並將它們與空字符串進行比較:
if(timeStampCell.getValue() === "")
注意:使用===
注意電子表格單元格的內容。 如果比較是針對Date對象,則===
僅當兩個操作數都是完全相同的對象時才會計算為true
。 請參閱JavaScript比較中應使用哪個等於運算符(== vs ===)?
在此示例中,您並不關心電子表格中的數據類型,只是它是空白的。 因此,您可以使用==
。
if(timeStampCell.getValue() == "")
另一個問題,這里:
var timezone = ss.getSpreadsheetTimeZone;
這將獲得對電子表格“getSpreadsheetTimeZone”方法的引用,但它不會告訴您時區。 要獲得方法的結果,您需要通過包括括號來調用它:
var timezone = ss.getSpreadsheetTimeZone();
通過這兩個更改,腳本適合我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.