我正在尝试将我的脚本部署为我在电子表格中创建的Web应用程序。我已经按照谷歌的指示处理了版本,但是当我尝试部署应用程序时,当我尝试测试Web应用程序以获取最新代码时,我收到以下消息: “缺少文档undefined(可能已被删除?)
我知道电子表格存在。我正在部署应用程序,因为我需要App URL作为我的代码的一部分。我试图通过电子邮件自动化审批流程。在部署应用程序时,我选择了最新版本,选择执行应用程序作为“用户访问网络应用程序”,因为我想分享此应用程序,并设置谁可以访问该应用程序“只有我自己”。当我点击发送到我的电子邮件的应用程序URL时,我也被告知“您请求的页面(或文档)不存在。”
我对此很新。我按照本教程获取了我的内容:http://youtu.be/K2uLzJdEVCA
然而,在视频中,它不被称为部署Web应用程序,而是称为发布脚本。我想这是新的东西。无论如何,我需要App URL。
这是我的代码,以防其中的内容存在缺陷。
function approve() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName('Editors');
var data = sheet.getDataRange().getValues();
for (var i = 0; i < data.length; i++) {
var row = data[i];
var fName = row[1];
var lName = row[2];
var email = row[3];
var approved = row[4];
var notified = row[5];
if(approved.toLowerCase() == 'yes' && notified.toLowerCase() != 'yes'){
GmailApp.sendEmail(email, "Request Approved: CI&W Community Edit Permission", "You may now make edits to the site!") ;
data[i][5]= 'yes';
}
}
sheet.getDataRange().setValues(data);
}
function onOpen() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
spreadsheet.addMenu('Functions', [
{ name: 'Approve', functionName: 'approve' }
]);
}
function onFormSub(event) {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName('Editors');
var fName = event.namedValues["First Name"];
var lName = event.namedValues["Last Name"];
var email = event.namedValues["Email"];
var url = 'I paste in the app URL i am given here';
url += '&spreadsheetId=' + spreadsheet.getId();
url += '&row=' + sheet.getLastRow();
Browser.msgBox(spreadsheet.getId())
var message = 'Name: ' + fName + ' ' + lName + '\nEmail: ' + email + '\nApprove: ' + url;
MailApp.sendEmail('fakeemail@gmail.com', 'New Edit Request: CI&W', message);
}
function doGet(event) {
var spreadsheetId = event.parameter['spreadsheetId'];
var spreadsheet = SpreadsheetApp.openById(spreadsheetId);
var sheet = spreadsheet.getSheetByName('Editors');
var row = event.parameter['row'];
sheet.getRange(row,5).setValue('yes');
var app = UiApp.createApplication();
var label = app.createLabel();
label.setText('The request was approved');
app.add(label);
return app;
}
答案 0 :(得分:0)
Webapp网址需要有2个参数:电子表格ID和行号。你是否正确添加了参数进行测试? 这也可以在视频中看到(但由于剧烈的视频压缩而难以阅读)
关于发布/部署为webapp,你是对的:进程的名称已经改变但是大致相同......不用担心。
编辑:经过进一步检查,有一个'?'在url的末尾和参数之前丢失了! (这种变化来自于构建webapp网址的新方式)
代码应该是这样的:
function onFormSub(event) {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName('Editors');
var fName = event.namedValues["First Name"];
var lName = event.namedValues["Last Name"];
var email = event.namedValues["Email"];
var url = 'https://script.google.com/macros/s/AKfycbyIfU-Qxp7urPdsD1iuYY2arBIeHya2Z7UPgdvMib67kFHNUWbQ/exec?';
url += '&spreadsheetId='+spreadsheet.getId()
url += '&row=' + sheet.getLastRow();
Browser.msgBox(spreadsheet.getId())
var message = 'Name: ' + fName + ' ' + lName + '\nEmail: ' + email + '\nApprove: ' + url;
MailApp.sendEmail('xxxx@gmail.com', 'New Edit Request: CI&W', message);
}