无法使Google脚本正常工作 [英] Can't get Google Scripts working

查看:141
本文介绍了无法使Google脚本正常工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我对Google脚本不熟悉。我发现了一些应该工作但没有的东西。我搜索了,但找不到解决方案。



我发现的脚本:

  function onEdit(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(My Sheet name);
var statusValues = sheet.getRange(D:D)。getValues();
var dateValues = sheet.getRange(E:E)。getValues();
for(var row in statusValues){
if(statusValues [row]!=Yes&& amp; dateValues [row] ==){
var num = parseInt(行)+ 1;
sheet.getRange(num,17).setValue(new Date());
}
}
};

当D中的单元格表示<$ c时,它应该自动应用E列中的编辑日期$ c>是(在同一行)。当我调试它时,我得到:

  TypeError:无法调用null的方法getRange。 (第5行,文件代码)* 

我的D列是一个空白/ /没有选项。这可能是为什么?此外,它不会显示在我的云端硬盘中。我读了一些应该发生的地方。

最后,在@Harold身边寻求帮助之后,这工作。
FYI我有一个表格,其中E记录D drop菜单设置为YES的日期,如果将D更改为其他任何内容,E中的此日期将被删除。
F和G相同。

  function onEdit(){
var ss = SpreadsheetApp.getActiveSpreadsheet ();
var sheet = ss.getSheetByName(MySheet); //不要忘记改变你的工作表名称
var statusValues = sheet.getRange(D:E)。getValues(); //执行一次导入 - 效率更高
var statusValues2 = sheet.getRange(F:G)。getValues();


for(var row in statusValues){
if(statusValues [row] [0] ==Yes&& statusValues [row] [1] = =){
var num = parseInt(row)+ 1;
sheet.getRange(num,5).setValue(new Date());如果(statusValues [row] [0]!=Yes&&& statusValues [row] [1]!=,则表示日期写入的列为
}
;日期){
var num = parseInt(row)+ 1;
sheet.getRange(num,5).setValue(); / /5是写日期的列



(var row in statusValues2){
if(statusValues2 [row] [ 0] ==Yes&& statusValues2 [row] [1] ==){
var num = parseInt(row)+ 1;
sheet.getRange(num,7).setValue(new Date());

if(statusValues2 [row] [0]!=Yes&&& statusValues2 [row] [1]!=Date){
var num = parseInt(行)+ 1;
sheet.getRange(num,7).setValue();
}
}
};

任何建议简化这个仍然是值得欢迎的。


I'm new to Google scripts. I found something that was supposed to work but didn't. I searched, but couldn't find a solution.

The script I found:

function onEdit() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("My Sheet name");
  var statusValues = sheet.getRange("D:D").getValues();
  var dateValues = sheet.getRange("E:E").getValues();
  for (var row in statusValues) {
    if (statusValues[row] != "Yes" && dateValues[row] == "") {
      var num = parseInt(row) + 1;
      sheet.getRange(num, 17).setValue(new Date());
    } 
  }
};

It is supposed to automatically apply the editing date in column E when a cell in D says Yes (on the same row). When I debug it, I get:

TypeError: Cannot call method "getRange" of null. (line 5, file "Code")*

My D column is a drop menu with blank/Yes/No options. Could this be why? Also, it doesn't show up in my Drive. I read somewhere that was supposed to happen.

解决方案

Finally, after a lot of buggering around and help from @Harold, I got this working. FYI I have a table where E records the date that D drop menu was set to YES and this date in E gets deleted if I change D to anything else. Same runs for F and G.

function onEdit() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("MySheet"); // don't forget to change by your sheet name
  var statusValues = sheet.getRange("D:E").getValues(); // performed a one time import - more efficient
  var statusValues2 = sheet.getRange("F:G").getValues();


  for (var row in statusValues) {
    if (statusValues[row][0] == "Yes" && statusValues[row][1] == "") {
      var num = parseInt(row) + 1;
      sheet.getRange(num, 5).setValue(new Date()); // "5" is the column where the date is wrote
    } 
      if (statusValues[row][0] != "Yes" && statusValues[row][1] != "Date") {
      var num = parseInt(row) + 1;
      sheet.getRange(num, 5).setValue(""); // "5" is the column where the date is wrote
    } 
  }

  for (var row in statusValues2) {
    if (statusValues2[row][0] == "Yes" && statusValues2[row][1] == "") {
      var num = parseInt(row) + 1;
      sheet.getRange(num, 7).setValue(new Date()); 
    } 
      if (statusValues2[row][0] != "Yes" && statusValues2[row][1] != "Date") {
      var num = parseInt(row) + 1;
      sheet.getRange(num, 7).setValue("");
    } 
  }
};

Any suggestions to streamline this are still welcome.

这篇关于无法使Google脚本正常工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆