-1

以下のように、毎日1分ごとにエラー通知を受け取ります/ * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * * * * ** * * スクリプト「視聴者の変更をサブスクライブする:服とアクセサリー」が最近正常に終了しませんでした。障害の概要を以下に示します。このスクリプトのトリガーを構成したり、将来の障害通知を受信するための設定を変更したりするには、ここをクリックしてください。

このスクリプトは、ドキュメント「閲覧者の変更をサブスクライブする:服とアクセサリー」で使用されます。

詳細:開始機能エラーメッセージトリガー終了6/28/12 9:08 PM send_changesそのアクションを実行するには、認証が必要です。時間ベースの6/28/129:08PM

心から、

Google Apps Script

助けが必要?GoogleAppsScriptのドキュメントにアクセスしてください。このメッセージには返信しないでください。(c)2012 Google * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** *** /これはそのエラーの関連コード

/ * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ***

var ss = SpreadsheetApp.getActiveSpreadsheet();

function send_changes() {
    var current_time = new Date();
    var last_check = ScriptProperties.getProperty("last_check");
    if (last_check == null) {
        last_check = current_time;
        ScriptProperties.setProperty("last_check", last_check);
    }

    var updates = '';

    var url = ss.getSheetByName('Dashboard').getRange('C5').getValue();
    var when = ss.getSheetByName('Dashboard').getRange('C8').getValue();
    var scope = ss.getSheetByName('Dashboard').getRange('C3').getValue();
    if (scope == 'Site') {
        var site = SitesApp.getSiteByUrl(url);
        var descendants = site.getAllDescendants();
        for (var j = 0; j < descendants.length; j++) {
            var updates = getInfo_(descendants[j], updates, last_check, when);
        }
    }
    else if (scope == 'Page and all subpages') {
        var page = SitesApp.getPageByUrl(url);
        var descendants = page.getAllDescendants();
        for (var j = 0; j < descendants.length; j++) {
            var updates = getInfo_(descendants[j], updates, last_check, when);
        }
    }
    else {
        var page = SitesApp.getPageByUrl(url);
        var updates = getInfo_(page, updates, last_check, when);
    }

    if (updates != "") {
        updates = updates.replace(/<td>/g, "<td style=\"border: 1px solid grey; padding: 7px;\">");
        updates = updates.replace(/<th>/g, "<th  colspan=2  BGCOLOR='#0066cc'  style=\"border: 1px solid grey; padding:  10px;  text-align: left;  color: white; font-size: 1.1em;\">");
        updates = updates.replace(/<table>/g, "<table style=\"width: 700px; border-collapse: collapse;\">");

        // Remove duplicates, remove people who have unsubscribed, remove false email addresses
        var mailing = scrubData_();

        var subject = ss.getSheetByName('Dashboard').getRange('G5').getValue();
        ///////////////////////////////////////////////////////////////////////////////////
        // If the number of updates is too important, send those updates as attachment
        ///////////////////////////////////////////////////////////////////////////////////
        if (updates.length * 2 > 19800) {
            var body = ss.getSheetByName('Dashboard').getRange('G7').getValue() + "<br><br>";
            body += "*** You can find those updates in attachment. ***";
            body += "<br><br><a href=\"" + ss.getFormUrl() + "\">Unsubscribe</a>";
        }
        else {
            var body = ss.getSheetByName('Dashboard').getRange('G7').getValue() + "<br><br>" + updates;
            body += "<br><br><a href=\"" + ss.getFormUrl() + "\">Unsubscribe</a>";
        }
        ////////////////////
        // Batch emails   
        ////////////////////
        for (var j = 0; j < mailing.length; j = j + 30) {
            var bcc = "";
            for (var k = j; k < j + 30; k++) {
                if (k < mailing.length && mailing[k][1] != "") {
                    bcc += mailing[k][1] + ",";
                }
            }
            if (updates.length * 2 > 19800) {
                MailApp.sendEmail('notify@google.com', subject, body, {
                    bcc: bcc,
                    htmlBody: body,
                    attachments: [Utilities.newBlob(updates, "text/html", "Updates")]
                });
            }
            else {
                MailApp.sendEmail('notify@google.com', subject, body, {
                    bcc: bcc,
                    htmlBody: body
                });
            }
        }
        var emails_sent = ss.getSheetByName('Dashboard').getRange('G17').getValue();
        ss.getSheetByName('Dashboard').getRange('G17').setValue(emails_sent + 1);
    }
    ScriptProperties.setProperty("last_check", current_time);
}

function getInfo_(page, updates, last_check, when) {
    var type = page.getPageType();
    switch (type.toString()) {
    case 'AnnouncementsPage':
        var newsfeed = page.getAnnouncements();
        for (var j = 0; j < newsfeed.length; j++) {
            if (chooseWhen_(newsfeed[j], when) > new Date(last_check).getTime()) {
                updates += "<table><tr><th>" + newsfeed[j].getTitle() + "</th></tr>";
                updates += "<tr><td style=\"border: 1px solid grey; padding: 7px; width: 100px;\">Blog </td><td>" + page.getTitle() + "</td></tr>";
                updates += "<tr><td  style=\"border: 1px solid grey; padding: 7px; width:  100px;\">Preview  </td><td  style=\"color: grey; font-style:  italic; border: 1px  solid grey;  padding: 7px;\">" + newsfeed[j].getTextContent().substr(0, 280) + "...</td></tr>";
                updates += "<tr><td style=\"border: 1px solid grey; padding: 7px; width: 100px;\">Link  </td><td><a href=\"" + newsfeed[j].getUrl() + "\">Link</a></td></tr></table><br>";
            }
        }
        break;
    case 'FileCabinetPage':
        var attachments = page.getAttachments();
        for (var j = 0; j < attachments.length; j++) {
            if (chooseWhen_(attachments[j], when) > new Date(last_check).getTime()) {
                updates += "<table><tr><th>" + attachments[j].getTitle() + "</th></tr>";
                updates += "<tr><td  style=\"border: 1px solid grey; padding: 7px; width: 100px;\">Type  </td><td>Attachment</td></tr>";
                updates += "<tr><td style=\"border: 1px solid grey; padding: 7px; width: 100px;\">Description </td><td>" + attachments[j].getDescription() + "</td></tr>";
                updates += "<tr><td style=\"border: 1px solid grey; padding: 7px; width: 100px;\">Page </td><td>" + page.getTitle(); + "</td></tr>";
                updates += "<tr><td style=\"border: 1px solid grey; padding: 7px; width: 100px;\">Link  </td><td><a href=\"" + page.getUrl() + "\">Link</a></td></tr></table><br>";
            }
        }
        break;
    case 'ListPage':
        var listItems = page.getListItems();
        var listUpdated = false;
        for (var j = 0; j < listItems.length; j++) {
            if (chooseWhen_(listItems[j], when) > new Date(last_check).getTime()) {
                listUpdated = true;
            }
        }
        if (listUpdated) {
            updates += "<table><tr><th>" + page.getTitle() + "</th></tr>";
            updates += "<tr><td  style=\"border:  1px solid grey; padding: 7px;  width:  100px;\">List  </td><td  style=\"color:  grey;  font-style:  italic; border: 1px  solid grey;  padding:  7px;\">New item  added</td></tr>";
            updates += "<tr><td style=\"border: 1px solid grey; padding: 7px; width: 100px;\">Link  </td><td><a href=\"" + page.getUrl() + "\">Link</a></td></tr></table><br>";
        }
        break;
    case 'WebPage':
        if (chooseWhen_(page, when) > new Date(last_check).getTime()) {
            updates += "<table><tr><th>" + page.getTitle() + "</th></tr>";
            updates += "<tr><td  style=\"border: 1px solid grey; padding: 7px; width:  100px;\">Preview  </td><td  style=\"color:  grey;  font-style: italic; border: 1px  solid grey;  padding:  7px;\">" + page.getTextContent().substr(0, 280) + "...</td></tr>";
            updates += "<tr><td style=\"border: 1px solid grey; padding: 7px; width: 100px;\">Link  </td><td><a href=\"" + page.getUrl() + "\">Link</a></td></tr></table><br>";
        }
        break;
    }
    return updates;
}

function chooseWhen_(item, when) {
    var time = 0;
    if (when == 'Item is updated') {
        time = item.getLastUpdated().getTime();
    }
    else {
        time = item.getDatePublished().getTime();
    }
    return time;
}

** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** ** /

4

3 に答える 3

1

スクリプト エラー通知には、「そのアクションを実行するには認証が必要です」と明確に記載されています。そのため、スクリプト エディターを開き (このトリガーをインストールしたユーザーとして)、スクリプト エディターから任意の機能を実行します。その後、認証を求められます。許可すると、これらのエラーは表示されなくなります。

一部のサービス (メールなど) では、スクリプトを変更するたびに再認証が必要になることに注意してください (空白の追加や保存も変更と見なされます)。

于 2012-06-29T05:13:24.833 に答える
0

Start Function Error Message Trigger End 7/10/12 9:08 PM send_changes そのアクションを実行するには権限が必要です。時間ベース 2012 年 7 月 10 日 21:08

send_changes 関数に対してエラー メッセージが表示されます。send_changes 関数を実行すると、承認が求められます。承認も受け入れます。それでもエラー通知は毎分来ます。この問題の恒久的な解決策を教えてください。

于 2012-07-11T01:25:35.750 に答える
0

いくつか提案できますか:

  • タイマー トリガーでスクリプトを実行する場合は、使用を避けgetActiveSpreadsheet()、代わりに使用する必要があります。openById('SSkey')
  • スクリプトの書き込み先のサイトとページへの書き込みアクセス権があるかどうかを確認する必要があります。スクリプト エディターからスクリプトを手動で実行し、エラーが発生したサイトまたはページにログオンすることで確認できます。
于 2012-06-29T04:55:39.293 に答える