1

スプレッドシート内で作成したWebアプリとしてスクリプトを展開しようとしています。Googleの指示に従い、バージョンの管理を行いましたが、アプリをデプロイしようとすると、最新のコードについてWebアプリをテストしようとすると、次のメッセージが表示されます。「未定義のドキュメントがありません(おそらく削除されましたか?)

スプレッドシートが存在することは知っています。コードの一部としてアプリのURLが必要なため、アプリをデプロイしています。メールで承認プロセスを自動化しようとしています。アプリをデプロイするときに、最新バージョンを選択し、このアプリを共有したいので「Webアプリにアクセスするユーザー」としてアプリを実行することを選択し、アプリにアクセスできるユーザーを「自分だけ」に設定しました。メールに送信したアプリのURLをクリックすると、「リクエストしたページ(またはドキュメント)が存在しません」と表示されます。

私はこれに非常に新しいです。私はこのチュートリアルに従って、自分が持っているものを入手しました:http: //youtu.be/K2uLzJdEVCA

ただし、ビデオでは、Webアプリのデプロイとは呼ばれず、スクリプトの公開と呼ばれます。これは何か新しいことだと思います。いずれにせよ、アプリの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;
}
4

1 に答える 1

0

Webapp URL には、スプレッドシート ID と行番号の 2 つのパラメーターが必要です。パラメータを正しく追加してテストしましたか? これはビデオでも見ることができます(ただし、ビデオの圧縮が激しいため、読みにくいです) ここに画像の説明を入力

webapp としての発行/デプロイについては、そのとおりです。プロセスの名前は変更されていますが、ほぼ同じです...心配する必要はありません。


編集:さらに調べたところ、「?」がありました URL の最後とパラメータの前にありませんでした。(この変更は、webapp の URL が構築される新しい方法によるものです)

コードは次のようになります。

    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);
}
于 2012-12-09T13:10:20.643 に答える