Google表格上的脚本文档仅适用于我(所有者)

时间:2016-12-09 15:56:32

标签: google-apps-script

我的驱动器中有一个共享的Google表格,其中两个按钮与在Tools->脚本编辑器中创建的功能相关联。基本问题是一切似乎对我来说都没问题,但对于其他任何有链接的人来说都没有。我也试过注销并点击链接,它没有为我运行(关于脚本在几秒钟后遇到错误的模糊信息)。我确保为有链接的任何人启用完整修改,但同样的问题。

如果它与脚本相关,我会在下面发布,以防万一。它基本上从一组2行(例如,位于A1到B100)中随机选择10行,并粘贴它在H1:I10中选择的内容。如果再次完成,它将从剩余数据中选择10个新内容并发布到H11:I20等。我使用" global"项目属性中的变量记住状态。

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSheet();

// Restart the selection process from the full set of data
//  This is effectively a hack for global variables/persistence
function resetData()
{
  var dataRange = sheet.getRange("dataRange");
  var data = dataRange.getValues();  

  // Save original data
  PropertiesService.getScriptProperties().setProperty('data', JSON.stringify(data));  

  //Browser.msgBox("data successfully set to:\n"+data +"\n\nThere are "+data.length+" items.");    
  var itemsRemainCell = sheet.getRange("itemsRemainCell");
  itemsRemainCell.setValue(data.length + " items remain.");

  // Set area for output data (changes due to items remaining)
  PropertiesService.getScriptProperties().setProperty('outputStart', "H1");
  PropertiesService.getScriptProperties().setProperty('outputEnd', "I10");

  // Clear possible previous data and borders
  sheet.getRange("H1:I100").clear();
}

// Select n things from what remains of data, and possibly copy them to some location
function select10() {
  data = JSON.parse(PropertiesService.getScriptProperties().getProperty('data'));

  if (data.length < 10)
  {
    Browser.msgBox("There are only "+data.length+" items left to pick");
    return;
  }

  var selection = new Array();
  for(var i=0; i<=9; ++i)
  {
    var index = getRandomInt(0, data.length-1);
    var item = data[index];
    selection[i] = item;

    data.splice(index, 1);
  }
  //Browser.msgBox(selection.toString());

  var outputStart = PropertiesService.getScriptProperties().getProperty('outputStart');
  var outputEnd = PropertiesService.getScriptProperties().getProperty('outputEnd');

  // Update with decremented length
  var itemsRemainCell = sheet.getRange("itemsRemainCell");
  itemsRemainCell.setValue(data.length + " items remain.");

  // Write out selection in some parallel columns
  var writableRange = sheet.getRange(outputStart+":"+outputEnd);
  writableRange.setValues(selection);
  writableRange.setBorder(true, null, null, null, false, false, "red", SpreadsheetApp.BorderStyle.DASHED);

  // Increment writable start/end 
  outputStart = "H" + (parseInt(outputStart.substring(1))+10); 
  outputEnd = "I" + (parseInt(outputEnd.substring(1))+10);

  // Save updated/spliced data
  PropertiesService.getScriptProperties().setProperty('data', JSON.stringify(data));
  PropertiesService.getScriptProperties().setProperty('outputStart', outputStart);
  PropertiesService.getScriptProperties().setProperty('outputEnd', outputEnd);
}

// Returns a random integer from min to max, inclusive
function getRandomInt(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

表单链接(我制作了副本,但不要太疯狂编辑它) https://docs.google.com/spreadsheets/d/1UnufKPE0-sO3TXBGRWMbErE_FINhx3Gx8VQNKtIMsH4/edit?usp=sharing

我还看到this post关于&#34;设计&#34;但我认为如果我给任何人链接编辑权限,它不应该影响我...

[编辑]我刚刚意识到,无论出于何种原因,完全匿名的用户都无法运行脚本。必须登录,然后在arturro的情况下,会出现一个弹出窗口,要求您授权运行脚本。匿名(例如,注销然后单击文档链接)没有确认弹出窗口,因此由于某种原因脚本运行并超时。

0 个答案:

没有答案