簡體   English   中英

單擊按鈕時,電子表格功能不會運行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM