完全吹干工作示例。
我有这个Google App脚本
- 显示文件上传对话框
- 将文件存储在Google Drive
- 将文件的URL写入当前单元格
除了步骤3之外,一切都很好,其中单元格更新始终是第一个纸中的单元格A1。但是光标位于另一个单元格上的#3上。
function onOpen(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet()
var menuEntries = [];
menuEntries.push({name: "File...", functionName: "doGet"});
ss.addMenu("Attach ...", menuEntries);
}
function doGet(e) {
var app = UiApp.createApplication().setTitle("Attach file to sheet");
var form = app.createFormPanel().setId('frm').setEncoding('multipart/form-data');
var formContent = app.createVerticalPanel();
form.add(formContent);
formContent.add(app.createFileUpload().setName('thefile'));
formContent.add(app.createSubmitButton('Submit'));
app.add(form);
SpreadsheetApp.getActiveSpreadsheet().show(app);
return app;
}
function doPost(e) {
var fileBlob = e.parameter.thefile;
var doc = DocsList.getFolderById('0B0uw1JCogWHuc29FWFJMWmc3Z1k').createFile(fileBlob);
var app = UiApp.getActiveApplication();
var label = app.createLabel('file uploaded successfully');
var value = '=hyperlink("' + doc.getUrl() + '","' + doc.getName() + '")'
app.add(label);
app.close();
SpreadsheetApp.getActiveSheet().getActiveCell().setValue(value);
return app;
}
我在dopost()函数之外尝试了SpreadsheetApp.getActiveSheet().getActiveCell().setValue(value);
,当在正常上下文中调用时,这起作用。我在这里缺少什么?
从这个答案来看,无法从doPost
函数获取当前的电子表格/单元格,我的工作方式就是通过隐藏字段在doGet
函数中获取它通过表格传递。