【发布时间】:2018-05-11 02:40:37
【问题描述】:
我是新手,我在尝试解决这个问题时遇到了一些麻烦。我有一个从谷歌表单收集数据的电子表格。我正在尝试找到一种方法,将基于列答案的数据移动到不同的谷歌表格。 (不是同一个文档中的一张纸,而是一个不同的文档)。似乎有一些关于移动到同一文档中的不同选项卡的信息,但不是不同的文档。
我首先要说我只尝试了一个 IMPORTRANGE 函数,但它只镜像数据,并且不允许您更新或更改单元格。
到目前为止,这是我能够拼凑的内容,但我可能还差得很远。
我有一个每小时运行一次的触发器。
function myFunction() {
var ss = SpreadsheetApp.openById('1U0I9SkbGkHgm-vRkwf2Ppc_yxlqrVlg2t8yKRy3sYuI');
var sheetOrg = ss.getSheetByName("Form Responses 1");
var value1ToWatch = "ANDERSON";
var value2ToWatch = "BARNES";
var sheetNameToMoveTheRowTo = "Sheet1"; //sheet has same name for each target openByID(" *url key* ")
var ss = SpreadsheetApp.getActiveSpreadsheet();
var ts1 =SpreadsheetApp.openById("1PxV1PQrMdu_2aSru4dpan8cUgHYdlYPUp5anyzjMAms");
sheet1in = ts1.getSheetByName("Sheet1");
var ts2 = SpreadsheetApp.openById("1BYyQZNiXc2QqsyqWs7uazjl5B6mfFYM1xj3u8gWyYOQ");
sheet1in = ts2.getSheetByName("Sheet1");
arr = [],
values = sheetOrg.getDataRange().getValues(),
i = values.length;
while (--i) {
if (value1ToWatch.indexOf(values[i][1]) > -1) {
arr.unshift(values[i])
sheetOrg.deleteRow(i + 1)
sheet1in.getRange(sheet1in.getLastRow()+1, 1, arr.length,
arr[0].length).setValues(arr);
};
if (value2ToWatch.indexOf(values[i][1]) > -1) {
arr.unshift(values[i])
sheetOrg.deleteRow(i + 1)
sheet2in.getRange(sheet2in.getLastRow()+1, 1, arr.length,
arr[0].length).setValues(arr);
};
}
}
- 谷歌表单将信息转储到“表单响应 1”中。
- B 列是我要从中获取值的单元格。 (总共有 9 个不同的值,可以是“ANDERSON”、“BARNES”、“SMITH”等)。
- 对于 sheetNameToMoveTheRowTo 是“Sheet1” - 这可能会造成混淆,我可能需要更改它,但例如
- ts1 =SpreadsheetApp.openById("1PxV1PQrMdu_2aSru4dpan8cUgHYdlYPUp5anyzjMAms") 我希望将信息移动到的工作表名称是“Sheet1”。
- ts2 = SpreadsheetApp.openById("1BYyQZNiXc2QqsyqWs7uazjl5B6mfFYM1xj3u8gWyYOQ") 工作表名称也是“Sheet1”,但在不同的文档中。
我认为,如果我能够让“ANDERSON”工作,那么我可以为每个可能的响应添加额外的变量,只需复制和粘贴额外的“IF”语句,只需更改 valueToWatch 和 targetSheet 值。
我尝试调试和运行上面的脚本,但没有任何反应。调试没有报告错误,但它没有移动任何信息。
知道我做错了什么吗?
// 更新我得到了这个工作。我已经用对我有用的代码更新了列出的代码。
【问题讨论】:
-
您可能需要将
var sheet = SpreadsheetApp.getActiveSheet();更改为var sheet = ss.getSheetByName(sheetNameToWatch),因为定时触发器不能有活动工作表 -
谢谢。所以只是为了澄清我是否使用了基于时间的触发器,我需要返回并更新所有活动工作表和活动范围引用?
标签: google-apps-script google-sheets google-sheets-api