我從作業表中獲取值,需要將值轉換為 2D 陣列,然后由 Google Forms 的 .createResponse() 接受。在電子表格中,cell[0] = Paris, NYC 和 cell[1] = LA 的值。我試過這個功能:
function testFunction1() {
const ss = SpreadsheetApp.getActiveSheet();
const form = FormApp.openByUrl(ss.getFormUrl());
var arr = [];
for(i = 0; i<2; i ){
var cell = ss.getRange(2,i 2).getValue();
cell = cell.split(',');
arr.push(cell);
}
var newRes = form
.getItems()[0]
.asCheckboxGridItem()
.createResponse(arr);
form.createResponse().withItemResponse(newRes).submit();
}
當我拆分每個單元格時,我得到: split cell[0] = ['Paris', 'NYC'] split cell[1] = ['LA']
將專案推入 arr 后,我得到: arr = [ ['Paris', 'NYC'], ['LA'] ]
這看起來像一個二維陣列,但隨后 .createResponse(arr) 給出了“例外:提交給復選框網格問題的無效回應”的錯誤。
如果我手動將 [ ['Paris', 'NYC'], ['LA'] ] 輸入到 .createResponse 中,如下所示:
function testFunction2() {
const ss = SpreadsheetApp.getActiveSheet();
const form = FormApp.openByUrl(ss.getFormUrl());
var newRes = form
.getItems()[0]
.asCheckboxGridItem()
.createResponse([ ['Paris','NYC'], ['LA'] ]);
form.createResponse().withItemResponse(newRes).submit();
}
那么沒有錯誤并且回應被正確地添加到表單中。
我也試過:
function testFunction1() {
const ss = SpreadsheetApp.getActiveSheet();
const form = FormApp.openByUrl(ss.getFormUrl());
var arr = [[]];
for(i = 0; i<2; i ){
var cell = ss.getRange(2,i 2).getValue();
cell = cell.split(',');
arr[0][i] = cell;
console.log(cell);
}
var cell = arr;
console.log(cell[0]);
var newRes = form
.getItems()[0]
.asCheckboxGridItem()
.createResponse(cell[0]);
form.createResponse().withItemResponse(newRes).submit();
}
這會引發“例外:提交給復選框網格問題的無效回應”的錯誤。在 .createResponse(cell[0])。
此外,如果 .createResponse(cell[0]) 更改為 .createResponse(cell),則會收到以下錯誤,“例外:引數 (number[]) 與 FormApp.CheckboxGridItem.createResponse 的方法簽名不匹配。”
我還使用了手動鍵入的專案、單元格值和結果陣列的 typeof,它們都作為物件出現。我究竟做錯了什么?
亞當
uj5u.com熱心網友回復:
從有效的情況.createResponse([ ['Paris','NYC'], ['LA'] ]);和cell[0] = Paris, NYC and cell[1] = LA您的問題來看,我擔心每個值arr可能都有一個空格。這只是我的猜測。那么在你的腳本中,下面的修改怎么樣?
從:
cell = cell.split(',');
到:
cell = cell.split(',').map(e => e.trim());
要么,
從:
var arr = [];
for(i = 0; i<2; i ){
var cell = ss.getRange(2,i 2).getValue();
cell = cell.split(',');
arr.push(cell);
}
到:
var arr = ss.getRange(2, 2, 1, 2).getValues()[0].map(c => c.split(",").map(e => e.trim()));
參考:
- 地圖()
- 修剪()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/443756.html
上一篇:是什么導致我的GoogleApps腳本中出現此TypeError?
下一篇:每個唯一值的逗號分隔數字的總和
