【问题标题】:GetCell -> GetValue -> SetValue failsGetCell -> GetValue -> SetValue 失败
【发布时间】:2015-10-11 12:42:26
【问题描述】:

我想让下面提到的代码工作,但它没有 - 当我运行它时没有任何反应(也没有错误),这意味着用户名(sUserName)没有保存在电子表格中......而且我不明白为什么这些列不能以 2、3、4 开头(那么时间戳可以保留在第 1 列中)而不是 1、2、3 - 如果是这样,我会收到错误消息。

代码如下:

 var userNameColumn = 1; //Column where the user name is written 
 var subTypeColumn = 2; //Column where the submitter type is written ex. "Requester"
 var sUserNameColumn = 3; //Column where the user name is saved

function saveUserName() {
 var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
 var rows  = sheet.getDataRange();
 var numRows = rows.getNumRows();

for (var i = 1; i <= numRows; i++) {

 var userNameCell = rows.getCell(i, userNameColumn);
 var subTypeCell = rows.getCell(i, subTypeColumn);
 var sUserNameCell = rows.getCell(i, sUserNameColumn);

  if(sUserNameCell.isBlank() && subTypeCell.getValue() === 'Requester') {
sUserNameCell.setValue(userNameCell)
  };  

 }
}  

这是我的电子表格和代码的链接:

Google Spreadsheet

【问题讨论】:

  • 使用内置调试器解决

标签: google-apps-script google-sheets setvalue getvalue


【解决方案1】:

看看有没有帮助

function saveUserName() {

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
var rows = sheet.getDataRange().getValues();
for (var i = 1; i < rows.length; i++) {
    var userNameCell = rows[i][1];
    var subTypeCell = rows[i][2];
    var sUserNameCell = rows[i][3];
    if (!sUserNameCell && subTypeCell === 'Requester') sheet.getRange(i+1,4).setValue(userNameCell)
    }
}

【讨论】:

  • i 应该从 0 开始。您也可以更改数组中的值,然后在最后将整个数组写回电子表格,这样您只需调用一次 setValues
  • 还有 - 没有错误,但在第三列“请求者名称”(sUserName)中也没有条目......但是为什么呢?我不明白:-(
  • 所以你在 col A 中有时间戳,在 col B 中有用户名,在 col C 中输入。这是否意味着你想要 col D (4) 中的请求者名称?请记住,数组是零索引的。所以 col C (3) 将被索引为 2。你能分享一份电子表格的副本,以便我们了解你的数据的结构吗?
  • 要分享我需要你的电子邮件的电子表格,请告诉我 - 还有一个 2. 编码应该与那个一起工作 - 如果你能修复它会很棒;-)提前致谢!
  • 我无法访问该工作表。您可以与知道链接的任何人分享编辑权限吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多