在Google Script中传输单元格数据?

时间:2014-08-13 12:52:02

标签: google-apps-script google-sheets

我正在尝试为我的Google电子表格制作一个脚本。

我想要的是脚本检查一个单元格中的单元格是否为空,如果不是,我希望它将该数据传输到另一个单元格的单元格中。每当我尝试这个时,它一直说“不能调用方法”getRange()“未定义。”

这就是我到目前为止所做的一切:

function timesheets(){
  var ss = SpreadsheetApp.openById("1iL2Didv_YOLpTad5WdR3kZSjLOLTSQk_yV-gQhh4RXs");
  if("ss!C2" != ""){
    var Tasks = ss.getRange("C2").getValue();
  }
}

我正在尝试创建一个新功能,而不是使用Google表格上的功能。我是否必须包含两个电子表格的名称?

1 个答案:

答案 0 :(得分:1)

您正在访问电子表格,您需要先进入工作表级别。

我建议您在尝试从一个电子表格到另一个电子表格之前,让脚本在同一个电子表格中工作。

function timesheets(){
  var ss = SpreadsheetApp.openById("1iL2Didv_YOLpTad5WdR3kZSjLOLTSQk_yV-gQhh4RXs");
  var sheet = ss.getActiveSheet();
  if("sheet!C2" != ""){
    var Tasks = sheet.getRange("C2").getValue();
  }
}
  

我正在尝试创建一个新函数而不是使用函数   Google表格。我是否必须包括两者的名称   电子表格?

包含其中的代码(目标)的电子表格需要知道它正在查找数据(表格)的工作表的ID。 如果要将值写入(目标)电子表格,则需要为其写一个变量来写入;

var sheetTarger = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

UNDERNEATH的部分是后期编辑##

我创建了两个电子表格。

  • 一个名为source的地方,我在单元格C2中写了“hello”一词
  • 在一个名为“目标”的地方,我放置了以下代码

    function timesheets(){
      var ss = SpreadsheetApp.openById("*********************");
      var sheet = ss.getActiveSheet();
      if("sheet!C2" != ""){
        var Tasks = sheet.getRange("C2").getValue();
      }
      var sheetTargert = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      sheetTargert.getRange("C2").setValue(Tasks);
    }
    

我用来自来源的ID替换了“ ***************** ”。

在脚本编辑器中,我运行了函数timesheets()

值“hello”出现在目标细胞C2

在脚本编辑器中,我去了

查看>执行成绩单

这产生了以下

[14-08-13 15:28:09:405 BST] Starting execution
[14-08-13 15:28:09:787 BST] SpreadsheetApp.openById([**************]) [0.366 seconds]
[14-08-13 15:28:09:891 BST] Spreadsheet.getActiveSheet() [0 seconds]
[14-08-13 15:28:09:975 BST] Sheet.getRange([C2]) [0.083 seconds]
[14-08-13 15:28:10:058 BST] Range.getValue() [0.082 seconds]
[14-08-13 15:28:10:058 BST] SpreadsheetApp.getActiveSpreadsheet() [0 seconds]
[14-08-13 15:28:10:139 BST] Spreadsheet.getActiveSheet() [0.08 seconds]
[14-08-13 15:28:10:139 BST] Sheet.getRange([10, 10]) [0 seconds]
[14-08-13 15:28:10:140 BST] Range.setValue([hello]) [0 seconds]
[14-08-13 15:28:10:386 BST] Sheet.getRange([C2]) [0.245 seconds]
[14-08-13 15:28:10:387 BST] Range.setValue([hello]) [0 seconds]
[14-08-13 15:28:10:559 BST] Execution succeeded [0.967 seconds total runtime]