【问题标题】:Container-Bound Google Script not executing even after the container has been shared即使在容器已共享后,容器绑定的 Google 脚本也不会执行
【发布时间】:2013-08-16 21:13:04
【问题描述】:

我在我的一个谷歌表格中编写了一个脚本,当单击一个按钮时,它会从活动表格中复制数据并将其粘贴到另一个文件中。当登录到任何 google 帐户时,脚本运行良好,但当匿名用户单击按钮时,没有任何反应。根据容器绑定脚本的相关信息,它们的权限镜像容器的权限。我已确保容器与匿名用户共享以供编辑,但除非登录,否则脚本仍不会执行。

我做错了什么?代码如下。

function DataCapture() {


    // Set Sheets

    var source_sheet = SpreadsheetApp.getActiveSpreadsheet();
    var target = SpreadsheetApp.openById("0AtYhRMASIGlFdGVQWFprMEpOOFRrUGYxTmNGd0dZLVE");
    var target_sheet = target.getSheetByName('Data');

    // Get target last row
    var last_row = target_sheet.getLastRow();

    // Set Ranges
    var source_range = source_sheet.getRange("A2:P2");
    var target_range = target_sheet.getRange("A"+(last_row+1)+":P"+(last_row+1));
    var info_range = source_sheet.getRange("D7:E7");
    var dollar_range = source_sheet.getRange("B7:B8");
    var approver_range = source_sheet.getRange("D7:F7");

    // Fetch values
    var values = source_range.getValues();

    // Save to spreadsheet
    target_range.setValues(values);

    // Clear the fields for the next entry
    source_range.clearContent()
    info_range.clearContent()
    dollar_range.clearContent()
    approver_range.clearContent()

}

【问题讨论】:

  • 发布您的代码通常是个好主意,或者更好的是,只发布给您带来困难的代码块。
  • 好点!谢谢你,完成了!
  • “按一个按钮”是指电子表格中有一个带有脚本函数链接的绘图或图像吗?如果是这样,您是否尝试过专注于确保该按钮适用于匿名用户?即使用只执行Browser.msgBox() 的基本脚本。 // 您的 脚本(不仅仅是这个函数)是否包含对需要用户身份验证的服务的调用,例如 GmailApp?我注意到这在某些情况下会导致问题。

标签: google-apps-script


【解决方案1】:

按钮将在用户权限下运行。如果它是匿名的,如果它需要任何 api 权限(比如读取电子表格),它就不会运行,因为没有用户。 对于非匿名用户,您需要添加一个菜单项来触发 google 权限对话框(只需从中进行任何愚蠢的 api 调用)。用户批准后就可以点击图片按钮了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-17
    • 1970-01-01
    相关资源
    最近更新 更多