尝试通过Google Apps脚本访问其他工作表时出现“错误值”

时间:2020-03-30 13:20:08

标签: google-apps-script google-sheets

我尝试编写一个函数来更改不是主表的表上的某些值。我已经尝试过openByIdopenByUrl,但都不能正常工作(第一行注释是我尝试过的另一个解决方案):

function setRandomCode() {
  //var sheet = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/1BOidZnEgdZhtkB8pAlYMBL6X-Ax3y46jVtli-LPhg0Y/edit#gid=524085816');
  var sheet = SpreadsheetApp.openById('524085816')
  var range = sheet.getRange('C3:F3');

  for (var x = 1; x <= range.getWidth(); x++) {
    var codeValue = Math.round(Math.random()*5, 1);
    var beadColour;
    switch (codeValue)
    {
      case 0:
        beadColour = "Blue";
        break;
      case 1:
        beadColour = "Green";
        break;
      case 2:
        beadColour = "Red";
        break;
      case 3:
        beadColour = "Magenta";
        break;
      case 4:
        beadColour = "Cyan";
        break;
      case 5:
        beadColour = "Yellow";  
        break;      
    }
    range.getCell(1, x).setValue(beadColour);
  }  
}

当我尝试openById时,它将返回“错误值”错误。我已经从URL中获取了我认为是工作表的ID。

当我尝试openByUrl时,它会正确执行该功能,但在主工作表上而不是我要更改的工作表上。

有一个简单的解决方法吗?

2 个答案:

答案 0 :(得分:2)

使用通过URL var sheet = SpreadsheetApp.openByUrl(URL);打开

您将整个电子表格及其工作表作为对象。

如果要在特定工作表上使用.getRange();,则可以使用sheet.getSheetByName('Sheet 1');首先获取工作表,然后在该对象上调用.getRange();

SpreadsheetApp.openById('524085816')您在此处提供的此ID是电子表格中单个工作表的工作表ID。您需要在此调用中提供实际的电子表格ID,以您的情况为准;

SpreadsheetApp.openById('1BOidZnEgdZhtkB8pAlYMBL6X-Ax3y46jVtli-LPhg0Y');

电子表格ID是URL中/d//edit之间的URL部分

您可以根据需要通过修改ID和工作表名称来尝试以下代码。

function setRandomCode() {
    var ss = SpreadsheetApp.openById('1BOidZnEgdZhtkB8pAlYMBL6X-Ax3y46jVtli-LPhg0Y');
    var sheet = ss.getSheetByName('Sheet 1');
    var range = sheet.getRange('C3:F3');

    for (var x = 1; x <= range.getWidth(); x++) {
        var codeValue = Math.round(Math.random() * 5, 1);
        var beadColour;
        switch (codeValue) {
        case 0:
            beadColour = "Blue";
            break;
        case 1:
            beadColour = "Green";
            break;
        case 2:
            beadColour = "Red";
            break;
        case 3:
            beadColour = "Magenta";
            break;
        case 4:
            beadColour = "Cyan";
            break;
        case 5:
            beadColour = "Yellow";
            break;
        }
        range.getCell(1, x).setValue(beadColour);
    }
}

答案 1 :(得分:1)

当我尝试openById时,它会返回“错误值”错误。

电子表格ID通常包含44个字符-数字和字母。它是网址的一部分,从https://docs.google.com/spreadsheets/d/开始,到/edit

前结束

当我尝试openByUrl时,它会正确执行该功能,但在主工作表上而不是我要更改的工作表上。

示例:

var sheet = SpreadsheetApp.openByUrl('PASTE HERE THE URL').getSheetByName('PASTE HERE THE NAME OF THE SHEET');



相关问题