【问题标题】:Apps Script API not pasting data into Google SheetsApps Script API 未将数据粘贴到 Google 表格中
【发布时间】:2019-03-31 17:02:10
【问题描述】:

我正在尝试通过从我的 Chrome 扩展程序调用该函数来执行该函数。我可以在我的“我的执行”中看到 chrome 扩展程序调用了该函数,但它没有将数据粘贴到 Google 表格中。

  • 当我尝试直接从脚本编辑器运行该函数时,它正在工作。

来自 Chrome 扩展的函数调用

post({ 'url': 'https://script.googleapis.com/v1/scripts/' + SCRIPT_ID + ':run',
  'callback': executionAPIResponse,
  'token': token,
  'request': {
    'function': 'setData',
    'parameters': { 'data': JSON.parse(exec_data.value) },
  }
});

脚本编辑器代码

function setData(parameters) {  
  try {
    var doc = SpreadsheetApp.openById(DOC_ID);
    var sheet = doc.getSheets()[0];
    var data = parameters.data;
    sheet.getRange(1, 1, data.length, data[0].length).setValues(data);
    return {"status":"ok", 'doc':doc.getUrl()};
  } catch(e){
    // if error return this
    Logger.log(e);
    return {"status": JSON.stringify(e)};
  }
}

我将 Apps 脚本项目部署为“API 可执行文件”。我想知道,我在脚本编辑器中部署应用程序的方式有问题吗?

【问题讨论】:

  • 在你的Chrome端脚本中,setData被作为一个函数调用。但在 GAS 端,函数名是setSheet。这种情况怎么办?而你在运行Chrome端的脚本时,如果出现错误,能显示出来吗?
  • @Tanaike 抱歉,我编辑了文件。该函数还在脚本编辑器中设置为 setData。双方都没有错误并返回真正的响应这是在 chrome 端收到的响应 {"done":true,"response":{"@type":"type.googleapis.com/google.apps. script.v1.ExecutionResponse"}}
  • 检查您的 Stackdriver 日志。
  • @tehhowch 检查了 Logger 和 Stackdriver,两者都没有错误

标签: google-apps-script google-chrome-extension deployment google-sheets google-apps-script-api


【解决方案1】:

getActiveSpreadsheet() 仅适用于绑定到电子表格的脚本项目,并且只能访问包含脚本项目的电子表格。

不要使用上述方法,而是使用openByUrl(url)openById(id)

【讨论】:

  • 也尝试过使用 OpenByID(id),但无法正常工作已将我的代码更新为当前代码
【解决方案2】:

我发现了我所犯的错误。实际上代码是正确的,但是在部署为 API 可执行文件时,您必须始终在更改代码时将版本更改为新版本

【讨论】:

    猜你喜欢
    • 2022-11-26
    • 2018-12-25
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多