【发布时间】:2015-10-04 20:51:11
【问题描述】:
我将 2 列数据插入到谷歌电子表格中。我的工作表有 3 列 A,B 和 C 。 A,B 列数据通过表单插入,但 C 列数据通过公式 =HTTPResponse() 插入。当使用以下代码通过表单插入新数据时,如何将此公式复制到 C 列的新行?目前我的代码没有将代码复制到新行!
插入代码:
function doPost(e) {
var ss = SpreadsheetApp.openById(ScriptProperties.getProperty('active'));
var sheet = ss.getSheetByName("DATA");
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0]; //read headers
var nextRow = sheet.getLastRow(); // get next row
var cell = sheet.getRange('a1');
var col = 0;
for (i in headers){
if (headers[i] == "Timestamp"){
val = new Date();
} else if (headers[i] == "HTTPResponse"){ // (based on the assumption you add a column to you sheet with this name
val = '=HTTPResponse(B'+(nextRow+1)+')';
} else {
val = e.parameter[headers[i]];
}
cell.offset(nextRow, col).setValue(val);
col++;
}
var app = UiApp.createApplication();
var panel = app.createVerticalPanel();
for( p in e.parameters){
panel.add(app.createLabel(p +" "+e.parameters[p]));
}
app.add(panel);
return app;
}
function setUp() {
ScriptProperties.setProperty('active', SpreadsheetApp.getActiveSpreadsheet().getId());
}
// 我想将下一个公式应用于新行:
unction HTTPResponse( uri )
{
var response_code ;
try {
response_code = UrlFetchApp .fetch( uri ) .getResponseCode() .toString() ;
}
catch( error ) {
response_code = error .toString() .match( / returned code (ddd)./ )[1] ;
}
finally {
return response_code ;
}
}
【问题讨论】:
-
你试过用这一行“cell.offset(nextRow, col).setValue('=HTTPResponse()');”由于变量 'col' 增加了,我认为您可以在 for 循环之后添加该行,它将在 C 列中添加公式。检查它是否有效。
-
感谢您的回复。我在 cell.offset(nextRow, col).setValue(val); 之后添加了您的行我在 c 列中得到了“未定义”的值!我该如何解决?
-
您是否还添加了网址? HTTPResponse 函数需要一个 url,因此它可以使用 URLFecht.fetch 函数调用它。
-
我有一个表单,我总是传递给表单一个 url 和 name 。 url 和名称已成功插入工作表,但在 C 列而不是服务器状态上,我得到“未定义”值。我想我也应该通过考试 =HTTPResponse(B4) 的列 ID。如何传递每个单元格 id ?
-
我什至在插入到行之前输入了列 id 但没有用(cell.offset(nextRow, col).setValue('=HTTPResponse(B4)');)
标签: google-apps-script google-sheets spreadsheet