亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Apps 腳本:如何通過單擊兩個按鈕循環加載對話框?

Apps 腳本:如何通過單擊兩個按鈕循環加載對話框?

呼啦一陣風 2023-11-02 21:49:14
基本上,我正在比較兩張表中的數據,因此我想顯示一個對話框,其中包含兩張表中兩個單元格的數據和兩個按鈕,供用戶選擇哪個數據單元格是正確的。然后我想循環遍歷一張紙與另一張紙不同的所有數據。如何顯示包含數據的對話框,使腳本等待按下按鈕,然后轉到列表中的下一項?這是我到目前為止的腳本:<script>  function myfunction() {    google.script.run.withSuccessHandler(qcComparison).qcGetData();  }  function qcComparison(sheetsData) {    var sheet1 = sheetsData["sheet1"];    var sheet2 = sheetsData["sheet2"];    var lastRow = sheet1.length;    var lastCol = sheet1[0].length    var headers = sheet1[0];    for (var row=1; row<=lastRow; row++) {      for (var col=0; col<lastCol; col++) {      // Do the comparison one cell at a time        var value1 = sheet1[row][col];        var value2 = sheet1[row][col];        if (value1 != value2) {          // Do something        }      }    }  }  document.addEventListener("DOMContentLoaded", myfunction());</script>這是我想用數據更新的 HTML 對話框:     <table id="qc-table" class="qc-table">        <tr>          <td><button id="sheet-1" class="btn btn-primary btn-sm">Sheet 1</button></td>          <td class="profile-data"><p id="sheet-1-profile">Data from cell 1</p></td>        </tr>        <tr>          <td><button id="sheet-2" class="btn btn-secondary btn-sm">Sheet 2</button></td>          <td class="profile-data"><p id="sheet-2-profile">Data form cell 2</p></td>        </tr>      </table>
查看完整描述

1 回答

?
千巷貓影

TA貢獻1829條經驗 獲得超7個贊

要在值不相等時顯示對話框,您可以調用 HTML 服務在 Apps 腳本中創建 HTML,然后使用getUi().showModalDialog.


編輯:for循環不是最好的解決方案,因為它們將在對話框打開時繼續執行。在這種情況下最好使用遞歸。


示例代碼如下:


var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");

var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2");

var range1 = sheet1.getRange(1,1,sheet1.getLastRow(),sheet1.getLastColumn()).getValues();

var range2 = sheet2.getRange(1,1,sheet2.getLastRow(),sheet2.getLastColumn()).getValues();


function qcComparison() {

    var row = 0, col = 0;

    compare(row, col);

}


function compare(row, col) {

    Logger.log(row, col);

    if (range1[row][col] != range2[row][col]) {

          Logger.log("Different values!");

          var html = HtmlService.createTemplateFromFile("page");

          html.row = row;

          html.col = col;

          html.cell1 = range1[row][col];

          html.cell2 = range2[row][col];

          var htmlOutput = html.evaluate();

          SpreadsheetApp.getUi().showModalDialog(htmlOutput, 'Choice');

    }

    else {

          compareNext(row, col);

    }

}


function compareNext(row, col) {

    Logger.log("Compare next", row, col);

    if (col < range1[row].length) {

      if (row < range1[col].length-1) {

            compare(++row, col);

      }

      else {

            row = 0;

            compare(row, ++col);

      }

    }

    return;

}


HTML 已更改為接受來自 Apps 腳本的值,示例代碼如下:


<!DOCTYPE html>

<html>

  <head>

    <base target="_top">

  </head>

  <body>

         <table id="qc-table" class="qc-table">

        <tr>

          <td>

            <button id="sheet-1" class="btn btn-primary btn-sm" onclick="google.script.run.setSheet1(<?=row?>,<?=col?>,<?=cell1?>);google.script.host.close();">Sheet 1</button></td>

          <td class="profile-data"><p id="sheet-1-profile">Data from Sheet 1: <?=cell1?>   </p></td>

        </tr>

        <tr>

          <td><button id="sheet-2" class="btn btn-secondary btn-sm" onclick="google.script.run.setSheet2(<?=row?>,<?=col?>,<?=cell2?>);google.script.host.close();">Sheet 2</button></td>

          <td class="profile-data"><p id="sheet-2-profile">Data from Sheet 2: <?=cell2?>   </p></td>

        </tr>

      </table>

  </body>

</html>


請注意,腳本現在在單擊工作表 1 或工作表 2 時運行函數來更新值:


function setSheet1(row, col, value) {

    sheet2.getRange(++row,++col).setValue(value);

    compareNext(--row, --col);

}


function setSheet2(row, col, value) {

    sheet1.getRange(++row,++col).setValue(value);

    compareNext(--row, --col);

}


查看完整回答
反對 回復 2023-11-02
  • 1 回答
  • 0 關注
  • 146 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號