Как добавить ссылку на данные по идентификатору в приложениях Google Script?

#google-apps-script #google-sheets

#google-apps-script #google-sheets

Вопрос:

Я пытаюсь использовать приложения Google Script для добавления данных в таблицу Google с нулевым значением столбца «оценить», например:

  ---- ------- ------ 
| id | name  | rate |  
 ---- ------- ------ 
| 1  | Item1 |      |
 ---- ------- ------ 
| 2  | Item2 |      |
 ---- ------- ------ 
| 3  | Item3 |      |
 ---- ------- ------ 
 

Как изменить приведенный ниже код, чтобы он работал нормально, например, id = 1 amp; rate = good для добавления значения столбца rate с помощью ссылки по идентификатору вызова 1,2,3 или любого другого, и работать над добавлением значения, например

  ---- ------- ------ 
| id | name  | rate |  
 ---- ------- ------ 
| 1  | Item1 | good |
 ---- ------- ------ 
| 2  | Item2 |      |
 ---- ------- ------ 
| 3  | Item3 |      |
 ---- ------- ------ 
 
 function doGet(e) {
  var id = e.parameter.id || 1;
  var rate = e.parameter.rate || "";
  var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/10S8Igzt1tpqUBgJHVKpny-2s6G3Y3-vFsLMvlZVqpkc/edit#gid=810612111");
  var sheet = ss.getSheetByName("list_film");
  return insertData(sheet, id,rate);
}

function insertData(sheet, id,rate){
  var rows = sheet.getDataRange().getDisplayValues().filter(([a]) => a == id);
  var data = rows.appendRow([rate]);
  return ContentService.createTextOutput(data).setMimeType(ContentService.MimeType.JSON);
}
``
 

Ответ №1:

Я считаю, что ваша цель заключается в следующем.

  • Когда он обращается к https://script.google.com/macros/s/###/exec?id=1amp;rate=good , вы хотите поместить значение good в ту же строку идентификатора столбца «C».

В этом случае я хотел бы предложить изменить функцию insertData следующим образом.

Модифицированный скрипт:

 function insertData(sheet, id, rate){
  var ranges = sheet.getDataRange().getDisplayValues().reduce((ar, [a], i) => {
    if (a == id) ar.push("C"   (i   1));
    return ar;
  }, []);
  sheet.getRangeList(ranges).setValue(rate);
  return ContentService.createTextOutput("Done.").setMimeType(ContentService.MimeType.JSON);
}
 
  • В этой модификации создается список диапазонов, и значение вводится с помощью списка диапазонов. Таким образом, когда существуют одинаковые идентификаторы, значение rate присваивается каждой строке столбца «C».
  • Если вы хотите поместить значения в другой столбец, пожалуйста, измените приведенный выше сценарий.

Примечание:

  • Когда вы изменили сценарий веб-приложений, пожалуйста, повторно разверните веб-приложения как новую версию. Таким образом, последний сценарий отражается в веб-приложениях. Пожалуйста, будьте осторожны с этим.

Ссылки: