首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >异常:无效参数: id

异常:无效参数: id
EN

Stack Overflow用户
提问于 2022-11-03 05:08:02
回答 1查看 55关注 0票数 0

我有一个代码正在执行我希望它做的事情,但我仍然得到标题错误消息。我不想每次运行脚本时都忽略它。如果有人能帮我清理这件事我会很高兴的。

一些背景:我使用这段代码将一个模板复制到多个不同的工作簿,每次复制它都会给它一个新的名称。工作表有两个/三个表,因此其余的代码会添加额外的列标题和数据验证,这取决于表的起始和结束位置,这将是不同的。

就像我提到的。它看起来很好,但我不明白为什么会出现异常错误。

例外:无效参数: id在copyTemplate的未知函数(版权模板:13:7)

代码语言:javascript
运行
复制
function onOpen(e) {
      SpreadsheetApp.getUi()
        .createMenu('Copy Template')
        .addItem('Copy Template', 'copyTemplate')
        .addToUi();
}

function copyTemplate() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet();
  const template = sheet.getSheetByName('Oct 22');
  const ish = sheet.getSheetByName('Sheet IDs'); 
  const ivs = ish.getRange('B2:B' + ish.getLastRow()).getValues().flat(); 
  ivs.forEach((id,i) => {
  let destination = SpreadsheetApp.openById(id);   // <-- destination sheet ID
  var copied_sheet = template.copyTo(destination);
  var newName = Browser.inputBox("New Sheet Name","Input new sheet name",Browser.Buttons.OK_CANCEL); //creates a dialog box asking for a new name input
  copied_sheet.setName(newName); //renames your sheet
  copied_sheet.activate();
  copied_sheet.getRange("E2").setNumberFormat('@STRING@').setValue(newName);
  destination.moveActiveSheet(1); // move the copied sheet in first position
  
  var osh = destination.getActiveSheet();
  const r = osh.createTextFinder("Client Name").findAll();
  for (var i = 0; i < r.length; i++) {
    var range = r[i];
    var comments = [["Comments", "Additional Comments"]];
    var rowValue = osh.getRange(range.getRow(), 15, 1, 2).setValues(comments);

    var ddSheet = sheet.getSheetByName('Dropdowns');
    var arRange1 = ddSheet.getRange('A2:A' + ddSheet.getLastRow());
    var wipRange2 = ddSheet.getRange('B2:B' + ddSheet.getLastRow());

    var dataRange1 = osh.getRange(r[0].getRow(),1,osh.getLastRow(),16);
    var dataRange2 = osh.getRange(r[1].getRow(),1,osh.getLastRow(),16);
    var firstBlankRow = dataRange1.getValues().findIndex(row => !row.join(''));
    var secondBlankRow = dataRange2.getValues().findIndex(row => !row.join(''));
    var arCell = osh.getRange(r[0].getRow() +1,15,firstBlankRow-1,1);
    var wipCell = osh.getRange(r[1].getRow() +1,15,secondBlankRow-1,1);

    var arRule = SpreadsheetApp.newDataValidation().requireValueInRange(arRange1).build();
    var wipRule = SpreadsheetApp.newDataValidation().requireValueInRange(wipRange2).build();
    arCell.setDataValidation(arRule);
    wipCell.setDataValidation(wipRule);

    var arComments = osh.getRange(r[0].getRow() +1,15,firstBlankRow-1,2);
    var wipComments = osh.getRange(r[1].getRow() +1,15,secondBlankRow-1,2);
    arComments.setBorder(true,true,true,true,true,true,"red",SpreadsheetApp.BorderStyle.DOUBLE);
    wipComments.setBorder(true,true,true,true,true,true,"red",SpreadsheetApp.BorderStyle.DOUBLE);
  }

  })
}

EN

回答 1

Stack Overflow用户

发布于 2022-11-03 05:46:15

通过显示Exception: Invalid argument: id的错误消息,我担心在实际情况下,const ivs = ish.getRange('B2:B' + ish.getLastRow()).getValues().flat();的值可能包含空值。如果我的理解是正确的,下面的修改如何?

发自:

代码语言:javascript
运行
复制
const ivs = ish.getRange('B2:B' + ish.getLastRow()).getValues().flat();

至:

代码语言:javascript
运行
复制
const ivs = ish.getRange('B2:B' + ish.getLastRow()).getValues().flat().filter(String);

或者,如果ivs的值包含无效的文件if,那么下面的修改如何?

发自:

代码语言:javascript
运行
复制
const ivs = ish.getRange('B2:B' + ish.getLastRow()).getValues().flat(); 
ivs.forEach((id,i) => {
let destination = SpreadsheetApp.openById(id);

至:

代码语言:javascript
运行
复制
const ivs = ish.getRange('B2:B' + ish.getLastRow()).getValues().flat().filter(String);
ivs.forEach((id, i) => {
  if (UrlFetchApp.fetch(`https://drive.google.com/thumbnail?id=${id}`, { muteHttpExceptions: true }).getResponseCode() != 200 || DriveApp.getFileById(id).getMimeType() != MimeType.GOOGLE_SHEETS) return;
  let destination = SpreadsheetApp.openById(id);

注意:

  • 这个答案是针对您的Exception: Invalid argument: id错误消息的。请小心点。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74298362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档