Google Scripts排序功能不再对第三方更改进行排序吗?

时间:2016-11-15 01:15:52

标签: google-apps-script google-sheets

一切! 新手谷歌脚本,但我是一个公平的中间人' Tasker的用户。回到8月份,我在电子表格中添加了一个脚本,根据单元格中的值自动对onEdit上的两列进行排序。将填充电子表格,并从Tasker插件更改特定单元格。八月,它运作良好!每次我使用Tasker添加一行时,它都会填充电子表格并立即对电子表格进行排序,而无需打开文件。

现在它没有。我当时没有改变任何东西,但我知道任何事情都可能发生变化 - 包括Android,Tasker,Spreadsheet Update Plugin或Google Scripts本身。 Tasker会正确填充工作表和/或更改单元格值,但电子表格不会排序。我打开工作表,数据将添加到工作表的底部,但它没有排序。我必须更改任何单元格的值,以便在打开它时对其进行排序。

所以,我搜索了GS Developer页面,Stack Overflow,QnA,Google Groups页面,甚至是Tasker Reddit和Google Group。在那个过程中,我把所有的东西都打破了,然后把它归还给它之前的状态:从Tasker成功填充,但除非我打开它,否则不会排序。

我很高兴再次开始工作。我对自动化系统非常满意,并希望与所涉及的不同社区(Tasker,AutoApps,KWGT和Google Drive)分享。我可以对我的手机说我花了钱,它会更新我的费用电子表格,它会更新我的手机小部件,以告诉我我的每月预算花了多少钱。我还有一个CookBook Tasker项目,在选择食谱后,将更新我的购物清单电子表格中的成分,并将其放在我的手机小工具上,该小工具将按我要去的商店排序并让我检查列表中的项目。事实上,这个购物小部件现在没用了。

有什么变化吗?从第三方更改工作表时,是否不再可能触发onEdit?这是我正在使用的代码......非常简单,因为我不知道javascript,但它只运行了一次,我喜欢它再次工作!

感谢您的时间!

function onEdit(e){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var storepicked = sheet.getRange("H1").getValue();
{
  sheet.sort(7,false);
}
if (storepicked == 1) {  
   sheet.sort(4);

}else if (storepicked == 2) {
   sheet.sort(5);

}else if (storepicked == 3) {
   sheet.sort(6);
}

{
  sheet.sort(7,false);
}
}

2 个答案:

答案 0 :(得分:0)

最快的解决方法是创建一个基于时间的触发器来每分钟运行一次。您的脚本很小,因此您不会遇到任何配额限制。

https://developers.google.com/apps-script/guides/triggers/installable#managing_triggers_manually

  

要通过脚本编辑器中的对话框手动创建可安装触发器,请执行以下步骤:

     

从脚本编辑器中选择Resources>当前项目的触发器。

     

点击以下链接:未设置触发器。

     

点击此处立即添加一个。

     

在“运行”下,选择要触发的功能名称。

     

在“活动”下,选择时间驱动或脚本绑定的Google App(例如,从电子表格中)。

     

选择并配置您要创建的触发类型(例如,每小时运行的小时计时器或打开的触发器)。

     

(可选)单击“通知”以配置触发功能失败时通过电子邮件联系的方式和时间。   单击“保存”。

答案 1 :(得分:0)

创建一个新的脚本文件 输入你的功能。你可以复制/粘贴,我没试过。 安装触发器来自电子表格,onChange。 保存!